The ever growing complexity of modern information systems is often characterized by greater risk of malfunctions. Many computer systems show an increasing number of system and program errors through their lifecycle from initial development, through new releases, and until retirement. Moreover, the complexity of the encountered errors also grows. As a flip side of the same process, various tools for detecting and fixing computer system errors evolve in a similar pace. This tendency is especially true regarding software applications, and techniques to prevent, detect and correct programming problems. Undoubtedly, efficient error detection and bug fixing have measurable advantages. For example, a typical programming error would systematically propagate if not timely addressed, and would require bigger effort to fix, including remote communication, re-distribution of software packages, etc.
The earlier a software problem is detected, the fewer maintenance resources would be spent. Therefore, in a productive computer system environment, system errors should quickly lead to alerts when detected. Thus, the appropriate measures for analyzing and solving a detected problem could be executed as soon as possible. However, in many cases the appropriate measures to resolve a computer software problem are not timely taken due to various factors. For example, the problem is reported with significant delay, or the problem is not directly reported to a specialist or organization best suited to solve it, etc. Often, some software errors are tolerated and not reported at all in order to avoid tedious manual procedures, e.g., searching for relevant data in log files, describing the error and the circumstances, communicating the problem with maintenance specialists, etc.